﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TaoBaoServices;
using WangMiEntity.Download;
using DownloadTaobaoAPI.DownLoadBusiness;

namespace DownloadTaobaoAPI
{
    public class DownLoadTask : BaseDownload
    {
        /// <summary>
        /// 下载上一个时间点到昨天的23:59:59的订单详情
        /// 用户首次登陆使用
        /// </summary>
        public void SyncOrdersByYesterday(DateTime lastSyncTime)
        {
            bool isSyncSuccess = false;
            try
            {
                if (isSyncSuccess)
                {
                    SyncOrdersByNow();
                }
                else
                {
                    //Todo：记录失败的时间点，再次同步
                }
            }
            catch (Exception)
            {

            }
        }

        /// <summary>
        /// 下载今天00:00:00到现在的订单详情
        /// 用户首次登陆使用
        /// </summary>
        protected void SyncOrdersByNow()
        { }

        /// <summary>
        /// 每隔一段时间同步订单量
        /// </summary>
        public void SyncOrdersPeriod(string sellerNick = "")
        {
            if (string.IsNullOrEmpty(sellerNick))
            {
                //同步授权用户订单
                var a = new TradeDownLoadBusiness().GetUserStatus();
            }
            else
            {
                //同步某用户订单
            }
        }

        /// <summary>
        /// 下载订单
        /// </summary>
        public void SyncOrders(string sessionKey)
        {
            var userStatus = new TradeDownLoadBusiness().GetUserStatus(sessionKey);

            if (userStatus.LastSyncTime.Equals("1900-01-01"))
            {
                //首次登陆 
                SyncOrdersByYesterday(DateTime.Now.AddMonths(-1));
            }
            else if ((DateTime.Now - userStatus.LastSyncTime).TotalDays > 1)
            {
                //用户再次授权或者订单同步有问题时候调用此逻辑

                if (Util.isLargeData(sessionKey, userStatus.LastSyncTime, DateTime.Now))
                {
                    //大数据量等同于首次登陆
                    SyncOrdersByYesterday(userStatus.LastSyncTime);
                }
                else
                {
                    //小数据量直接同步
                    SyncOrdersPeriod(sessionKey);
                }
            }
            else
            {
                if ((DateTime.Now - userStatus.LastSyncTime).TotalHours <= 30)
                {
                    // "同步时间间隔要大于30分钟";
                }

                SyncOrdersPeriod(sessionKey); //立刻同步该用户订单(用户强制同步时候使用)
            }
        }
    }
}
